package com.game.util;

import java.security.MessageDigest;
import java.util.Arrays;
/**
 * 微信服务器和公众号后台进行验证的工具类
 * @author Administrator
 *
 */
public class VerifyUtils {
	/**
	 * 根据微信开发文档的规定，进行验证
	 * @param signature
	 * @param timestamp
	 * @param nonce
	 * @param token
	 * @return
	 */
	public static boolean isEqual(String signature,String timestamp,String nonce,String token){
		String[] strs = {timestamp,nonce,token};
		Arrays.sort(strs);
		StringBuilder sb = new StringBuilder();
		for (String string : strs) {
			sb.append(string);
		}
		String sortedStr = sb.toString();
		
		return signature.equals(getSha1(sortedStr));
	}
	
	/**
	 * sha1加密
	 */
	public static String getSha1(String str) {  
        
        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',  
                'a', 'b', 'c', 'd', 'e', 'f' };  
        try {  
				 MessageDigest mdTemp = MessageDigest.getInstance("SHA1");  
				 mdTemp.update(str.getBytes("UTF-8"));  
				 byte[] md = mdTemp.digest();  
				 int j = md.length;  
				 char buf[] = new char[j * 2];  
                int k = 0;  
                for (int i = 0; i < j; i++) {  
                byte byte0 = md[i];  
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];  
                buf[k++] = hexDigits[byte0 & 0xf];  
        }  
            return new String(buf);  
        } catch (Exception e) {  
        return null;  
        }  
	}  
}
